package com.dog.basics.service.common;

import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.*;
import com.alipay.api.response.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

/**
 * @program: clumsy_security
 * @description: 支付宝业务
 * @author: Guo
 * @create: 2019-05-16 11:48
 **/
public interface AlipayService {

    /**
     * 订单回调 - 支付宝支付
     *
     * @param request
     * @return guonh 2019年10月14日
     */
    Map aliPayLowerOrderCallback(HttpServletRequest request);
    /**
     *  APP原生订单发起支付
     * @return
     * guonh 2019年10月14日
     */
    AlipayTradeAppPayResponse appOrderPay(AlipayTradeAppPayModel model);
    /**
     * 支付宝退款
     * @param refundModel
     * @return
     * guonh 2019年10月14日
     */
    AlipayTradeRefundResponse refund(AlipayTradeRefundModel refundModel);


    /**
     * 企业转账到账户 - 提现
     * @param model
     * @return
     * guonh 2019年10月21日
     */
    AlipayFundTransToaccountTransferResponse aliPayEntPay(AlipayFundTransToaccountTransferModel model);


    /**
     * @Author: guoy
     * @Param: [model, notifyUrl]
     * @Return: com.alipay.api.response.AlipayTradePrecreateResponse
     * @Date: 2019/10/31 11:29
     * 功能描述：扫码支付
     */
    AlipayTradePrecreateResponse tradePrecreatePayToResponse(AlipayTradePrecreateModel model);

    /**
     * @Author: guoy
     * @Param: [response, model, returnUrl]
     * @Return: java.lang.String
     * @Date: 2019/12/7 11:22
     * 功能描述：网页支付
     */
    Boolean wapPay(HttpServletResponse response, AlipayTradeWapPayModel model, String returnUrl) throws IOException, AlipayApiException;

    /**
     * @Author: guoy
     * @Param: [alipayTradeCreateModel]
     * @Return: com.alipay.api.response.AlipayTradeCreateResponse
     * @Date: 2019/12/7 11:27
     * 功能描述：统一收单交易创建接口
     */
    AlipayTradeCreateResponse tradeCreateToResponse(AlipayTradeCreateModel alipayTradeCreateModel) throws AlipayApiException;


}
